<?php
/**
 * Form_Text
 *
 * класс Form_Text позволяет работать с <input type="text"
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 2.1
 */
class Form_Text extends Form_Element
{
  protected $_maxlength = 255; //максимальное число вводимых символов
  protected $_size; //размер элемента ввода
  protected $_type = 'text'; // Тип ввода
  protected $_placeholder; // placeholder элемента ввода
  public $_class = 'standardText';
  //protected $_showValue = true;//Выводить ли значение, в атрибут value

  function __construct(array $arrSettings = array(), $fieldName = null, $showInConstruct = false) {
    parent::__construct($arrSettings, $fieldName);
    if ($showInConstruct)
      $this->show();
  }
	/**
	 * Метод устанавливает свойство
	 *
	 * @param string $settingName
	 * @param mixed $settingValue
	 * @param string $additionalAllowedSettings
	 */
	public function setSetting($settingName, $settingValue, $additionalAllowedSettings = null) {
    switch ($settingName) {
    	case 'maxlength':
    		$this->setMaxLength($settingValue);
    		break;
    	case 'size':
    		$this->setSize($settingValue);
    		break;
    	case 'type':
    		$this->_type = $settingValue;
    		break;
    	case 'placeholder':
    		$this->setPlaceholder($settingValue);
    		break;
    	default:
    	  parent::setSetting($settingName, $settingValue, '"maxlength", "size"');
			  break;
    }
  }
  /**
   * задет максимальное число вводимых символов
   *
   * @param integer $maxlength
   */
  public function setMaxLength($maxlength) {
    $this->_maxlength = $maxlength;
  }
  /**
   * задет размер элемента ввода
   *
   * @param integer $size
   */
  public function setSize($size) {
    $this->_size = $size;
  }
  /**
   * задет placeholder элемента ввода
   *
   * @param integer $placeholder
   */
  public function setPlaceholder($placeholder) {
    $this->_placeholder = $placeholder;
  }
  /**
   * Выводит элемент
   *
   */
  public function show() {
  	$this->checkForErrors();
  	echo '<input type="' . $this->_type . '"';
  	$this->showElementAttributes();
  	if (isset($this->_maxlength)) echo ' maxlength="' . $this->_maxlength . '"';
  	if (isset($this->_size)) echo ' size="' . $this->_size . '"';
  	if (isset($this->_placeholder)) echo ' placeholder="' . $this->_placeholder . '"';
  	//if ($this->_required) echo ' required="required"';
  	if (!empty($this->_pattern)) echo ' pattern="' . $this->_pattern . '"';
  	$valToShow = null;
  	if (isset($this->_value) && $this->_value !== NULL) $valToShow = $this->_value;//echo ' value="' . $this->_value . '"';
  	elseif (isset($this->_defaultValue)) $valToShow = $this->_defaultValue;//echo ' value="' . $this->_defaultValue . '"';
  	echo ' value="' . str_replace('"', '&quot;', $valToShow) . '"';
  	//echo 'value="' . (if (isset($_obj))) . '"';

  	echo ' />';
  	$this->showAfterElementMessage();
  }

  /**
   * Отменяет вывод атрибута value
   *
   */
  /*
  public function dontShowValue() {
    $this->_showValue = false;
  }
  */
}
?>